package poker;
import java.util.LinkedList;
import java.util.Random;

public class Bot extends Thread
{
	Thread watek_bota;						//watek bota
	private Karta karty[];					//karty bota
	private OstatniaKarta last_card;		//ostatnio wybrana karta z talii
	private Talia talia;					//talia wylosowanych kart
	private LinkedList<Integer> lista;		//lista kart do podmiany itp.
	private Karta cards[];					//karty do zakonczenia gry
	private volatile boolean exit;
	private static boolean wymienil;
	
	public Bot(String nazwa, OstatniaKarta last_card,
		Talia talia, Karta cards[])
	{
		wymienil = false;
		exit = false;
		this.last_card = last_card;
		watek_bota = new Thread(nazwa);
		karty = new Karta [5];
		for (int i = 0; i < 5; ++i)
			karty[i] = talia.zwroc_karte(last_card.wartosc_gory() +i, watek_bota.getName());
		last_card.dodaj(5);
		this.cards = cards;
		this.talia = talia;
		lista = new LinkedList<Integer>();
	}
	
	public void run()
	{
		while (!exit)
		{
			losuj_ruch();
		}
	}
	
	private void zamien_karty(LinkedList<Integer> do_zamiany)
	{
		for (int i = 0; i < do_zamiany.size(); ++i)
		{
			if (last_card.wartosc_gory() < 52)
			{
				karty[(int) lista.get(i)] = talia.zwroc_karte(
						last_card.wartosc_gory(), watek_bota.getName());
				last_card.dodaj(1);
			}
		}
		lista.clear();
		wymienil = true;
	}
	
	private void losuj_ruch()	
	{
		Random random;
		random = new Random();
		double liczba;
		liczba = random.nextDouble() * 1000;
		
		if (liczba <= 500)
		{
			liczba = 0;
			while (liczba > -1 && liczba < 5)
			{
				liczba = random.nextDouble() * 10;
				if (liczba > -1 && liczba < 5 && lista.size() < 5)
				lista.add((int)liczba);
			}
			if (!lista.isEmpty() && !wymienil)
				zamien_karty(lista);
			czekaj(5000);
		}
		else
		{
			ObslugaWatkow.sprawdz(last_card, cards, karty);
			System.out.println("Wychodze!!!!!");
			exit = true;
			czekaj(500);
		}
	}
	
	private void czekaj(long czas)
	{
		try
		{
			if (czas > 0)
				Thread.sleep(czas);
		}
		catch (InterruptedException ie)
		{
			System.out.println("Wystąpił błąd:\n" + ie.getMessage());
		}
	}
}